package com.gpframework.module.common.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.gpframework.common.constant.BrandConstants;
import com.gpframework.common.core.domain.BasePlusEntity;
import com.gpframework.module.module.domain.BrandInfo;
import com.gpframework.module.module.domain.BrandStore;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * @ClassName CommonWxUser
 * @Author gpframework
 * @Date 2022-04-07
 * @Version 1.0.0
 * @Description 微信用户 PO对象
 */
@Data
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@Accessors(chain = true)
@TableName("common_wx_user")
public class CommonWxUser extends BasePlusEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long wxUserId;
    /**
     * 品牌id
     */
    private Long brandId;

    /**
     * 会员类型：member、员工：employee
     */
    private String wxType;

    /**
     * 品牌名称
     */
    private String brandName;
    /**
     * 门店id
     */
    private Long storeId;
    /**
     * 店铺id
     */
    private Long lastStoreId;
    /**
     * 系统用户id
     */
    private Long brandUserId;
    /**
     * uni-ubi人脸id
     */
    private String guid;
    /**
     * 微信小程序openid
     */
    private String wxAppletOpenid;
    /**
     * 微信公众号openid
     */
    private String wxPublicOpenid;
    /**
     * 微信unionId
     */
    private String unionId;
    /**
     * 微信号
     */
    private String wechatCode;
    /**
     * 用户编号;员工工号
     */
    private String userCode;
    /**
     * 昵称
     */
    private String nickname;
    /**
     * 真实名称
     */
    private String userName;
    /**
     * 性别
     */
    private String sex;
    /**
     * 头像url
     */
    private String headImage;
    /**
     * 区域id
     */
    private Long areaId;
    /**
     * 详细住址
     */
    private String address;
    /**
     * 微信号
     */
    private String wxCode;
    /**
     * 手机号
     */
    private String phone;
    /**
     * 身份证号
     */
    private String idNumber;
    /**
     * 证件类型 其它1001、身份证1002
     */
    private Integer certificateType;
    /**
     * 生日
     */
    private Date birthday;
    /**
     * 邮箱
     */
    private String email;
    /**
     * 简介
     */
    private String synopsis;
    /**
     * 公司区域id
     */
    private Long companyAreaId;
    /**
     * 公司详细地址
     */
    private String companyAddress;
    /**
     * 婚姻情况
     */
    private String marriageCondition;
    /**
     * 子女情况
     */
    private String childrenCondition;
    /**
     * 录入人id
     */
    private Long inputUserId;
    /**
     * 录入人名称
     */
    private String inputUserName;
    /**
     * 分享人id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long shareId;
    /**
     * 分享人名称
     */
    private String shareName;
    /**
     * 状态;有效、无效、冻结、删除
     */
    private String status;
    /**
     * 是否进小程序默认打开二维码
     */
    private String defaultOpenQrcode;

    /**
     * uni-ubi人脸id
     */
    private String faceGuid;
    /**
     * 人脸图片
     */
    private String faceImage;

    /**
     * 人脸上传设备状态码。-1 表示设备未进行回调，其它参考对接文档： 2.1.2 上传人像数据 - 应答
     */
    private String deviceStatusCode;

    /**
     * 人脸上传设备状态码描述符
     */
    private String deviceStatusCodeDesc;

    /**
     * 排序
     */
    private Long sort;
    /**
     * 备注
     */
    private String remarks;


    /**
     * 会员码
     */
    private String qrCode;

    public CommonWxUser(BrandInfo brandInfo) {
        brandId = brandInfo.getBrandId();
        wxType = BrandConstants.WE_CHAT_BRAND_ADMIN;
        brandName = brandInfo.getBrandName();
        storeId = BrandConstants.DEFAULT_BRAND_ID;
        brandUserId = brandInfo.getBrandUserId();
        nickname = brandInfo.getBrandName();
        userName = brandInfo.getBrandName();
        phone = brandInfo.getMobile();
    }

    public CommonWxUser(BrandStore brandStore) {
        brandId = brandStore.getBrandId();
        wxType = BrandConstants.WE_CHAT_STORE_ADMIN;
        brandName = brandStore.getBrandName();
        storeId = brandStore.getStoreId();
        brandUserId = brandStore.getBrandUserId();
        nickname = brandStore.getBrandName();
        userName = brandStore.getBrandName();
        phone = brandStore.getLeaderMobile();
    }
}
